Henrik Høltzer (heho)
Software Construction - SWC 1.1 1C

Semester: 1.sem., efterår 2018
Email: heho@easj.dk

Materialer generelt:

Noter:

Object-Oriented Programming with C# (findes på GitHub her)


Opgaver:

C# Programming Exercises (findes på GitHub her)

Unsolved exercise projects

Solved exercise projects


Supplerende materiale:

Microsoft Visual C# Step by Step (8th ed.), by John Sharp (ISBN: 9781509301041)

NB: Bogen er IKKE pensum

 

Video

Lynda.com (Gratis adgang; tilmeld med EASJ e-mail konto: https://www.lynda.com/email-signup) (SWC Lynda.com Playlist)

MS Academy: C# Fundamentals for absolute beginners

 

Lektier:

Installér Visual Studio 2017 (Enterprise Edition), findes på Microsoft Imagine (aka Dreamspark).

Installér også ReSharper og GitHub extensions

 

Andet:

Studieordning Datamatiker

Opgave-Oversigten

Læse-Oversigten


Wiki C# : Template (mere info senere)

 

 

Uge Emner Materialer Opgaver
36

Velkommen til Datamatiker-studiet!

Generel intro til EASJ og studiet

 

Overblik over Software Construction

Værktøjer og Materialer

I gang med Visual Studio

Introduktion til EASJ og studiet

Introduktion til IT-systemer

Greenfoot 

 

Visual Studio (MS Imagine)
ReSharper
HowTo make Visual Studio (with ReSharper) quiet...
Git

Greenfoot-opgave
37

Hyttetur (tirsdag morgen - onsdag morgen)

 

 
37
(Fredag)

Programming - Part I

Code organisation
Types
Variables
Type conversion
Simple I/O
Arithmetic
Logic
Functions

IT HW SW

Noter: s 7-41

(Bog: Kap. 1, 2)

Get.1
Pro1.1 - Pro1.3
38-39

Object-Oriented Programming - Part I

What is OO?
Creating objects
Reference-type vs. value-type
Using properties and methods
Class definitions
Class collaboration
Static classes and methods

Noter: s.42-75

(Bog: Kap. 7)

Ekstra opgave: (LilleOpgave)
1) Lav et program der kan tage et heltal som input og fortælle om det er et et negativt tal, et positivt tal eller nul.
2) Lav et andet program der tager to heltal som input og kan fortælle hvilket af dem der er størst.

Løsning: LilleOpgave.zip

OOP.1.1 - 1.7
40-41

Programming - Part II

Control statements
Debugging
Data structures
Code Quality (keeping code DRY)

Noter: s.76-116

 (Bog: Kap. 4, 5, 10, 18)

Ekstra opgave: (Class Fly)
Implementer klassn Fly - helt fra grunden i et nyt consol-project.
Klassen Fly skal have følgende:
Instansfelter: _xPosition, _yPosition, _xSpeed, _ySpeed og _flyId.
Konstruktører: Fly(string) og Fly(string, double, double, double, double)
Properties: FlyId(readonly), XPosition, YPosition, XSpeed, YSpeed
Metoder: Move(), Accelerate(), Decelerate(), Stop(), Turn(double, double)

Move() skal opdatere _xPosition og _yPosition ved at addere _xSpeed og _ySpeed til positionerne. Accelerate() og Decelerate() skal opdatere _xSpeed og _ySpeed med en fast procentsats fx 10%. Stop() sætter _xSpeed og _ySpeed til 0. Turn(double, double) gopdatere _xSpeed og _ySpeed med nye værdier.

Test klassen Fly ved at oprette Fly-objekter i Main() og kalde metoderne på objekterne.
(Brug Console.WriteLine() til at udskrive flydata før og efter hvert metodekald.)

Hvis du har mod på vektorregning eller er en ørn til cosinus og sinus er du velkommen til at beregne de nye værdier i stedet for at parameteroverføre de nye værdier :)

Løsning: FlyClass.zip (kode fra klassen)

Studiestartsprøve


Pro.2.1 - Pro.2.15

42 Efterårsferie  
43-44

Object-Oriented Programming - Part II

Composition/Inheritance
Object construction
Overriding properties/methods
Polymorphic behavior
Abstract methods and classes
Interfaces
Exceptions

Noter: s.117-133

(Bog: Kap. 12, 13, 6 (i den orden))

EjendomsMægleren
OOP.2.1 - 2.6
ISpeak
Exceptions-stack
44-45

GUI, XAML and Data Binding

XML/XAML
Simple GUI controls
Layout controls
Control properties
Data binding fundamentals
Collection views and Data binding
Master/Details view and Data binding
Commands

 

Noter: s.134-174

(Bog: Kap. 25, 26)

How to: Implement Property Change Notification


SimpleMVVMBinding.html
NoteMVVM.html
(GUI.1.0 - GUI 1.8)
45

MVVM Architecture

Single domain object
Collection of domain objects
Item view model
Master view model
Details view model
MasterDetails view model
Commands in MVVM

Noter: s.175-193

(Bog: Kap. 26)

Databinding Part1
Databinding Part2

Other Interesting MVVM-links
Windows 10 Development for Absolute Beginners
Windows 10: Data Binding
A-Totally-Simple-Introduction-to-the-MVVM-Concept
MVVM-Pattern-in-WPF-A-Simple-Tutorial-for-Absolute-Beginners
WPF-MVVM-Quick-Start-Tutorial
wpf-mvvm-pattern-a-simple-tutorial-for-absolute-beginners
http://wpftutorial.net/DataGrid.html
WPF Apps With The Model-View-ViewModel Design Pattern
Simple MVVM Walkthrough – Part I
MVVM Made Simple
How to Listen to Property Changes of Items of an ObservableCollection
Controls by function (Windows Store apps using C# and XAML)

(GUI.2.0 - GUI.2.3)

C#-Projects:
RelayCommand.zip
RelayArgCommand.zip
46

Bindings
MVVM Design Pattern

MSDN: Commands, RelayCommands and EventToCommand
EventToCommand is now built into Windows 8.1!

Other Interesting XAML-links (about ListView and GridView)
Quickstart: adding ListView and GridView controls (XAML)
How to group items in a list or grid (XAML)
Data Templating overview (DataTemplate, ItemTemplate)

Designing Your XAML UI :
XAML for Windows 10: Layout NEW!
XAML for Windows 10: Items Controls NEW!


46



Persistens:
Filer/Serialisering





Windows App Store:
MSDN: StorageFolder

Exercise:
SerializationTest

Exercise:

Implementer persistens i Note App'en se: NoteMVVM.html
Dvs. det skal være muligt at hente og gemme Noter på fil.

Bemærk:
I windows App er der ikke adgang/rettigheder til filsystemet direkte, dvs der kan ikke umiddelbart streames (serialiseres) til en hvilkårlig fil. I stedet kan benyttes localstorage, der fås adgang til via class StorageFolder/StorageFile.

Følgende skriver localdata til filen Data.txt i localstorage:
StorageFile localFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("Data.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(localFile, localData);

Filen kan findes på harddisk her: C:\Users\{user}\AppData\Local\Packages\7bbfef26-f6ac-4a10-9fed-4abfefafca86_18sn2ae6rna7w\LocalState.



C#-Projects:
WindowsAppSerializeTest.zip
PersistencyService

47

Async, Task, Await

MSDN: Asynchronous Programming with Async and Await
CodeProject: Asynchronous Programming in C# 5.0 using async and await

Don't Block on Async Code

Slides: ProcessesAndThread (PowerPoint)
Slides: AsynchronousPrograming (PowerPoint)

C#-Projects:
GuiExampleAsyncAwait
SimpleBrowserAsync


Notice:

"Blend always launches with "We're preparing for first use" dialog"


47 Exceptions


MSDN Exceptions and Exception Handling (C# Programming Guide)
MSDN
Gracefully Handling Exceptions -21 (video)
Exceptions (PowerPoint)



Exceptions and Exception Handling in C#


Exercise:
I programmet SerializationTest.zip fra uge 46 blev der testet en simpel Reading og Writing til en FileStream, men uden brug af Exceptions-håndtering. Udvid programmet så der nu bliver implementeret en Exception-håndtering (fx håndtering af FileNotFoundException og DirectoryNotFoundException)

Exceptions-Stack

C#-Projects:
WindowsAppSerializeTestV2.zip
(nu med håndtering af FilNotFoundException)


Solutions:
MyStack.zip

48-50 Projektarbejde   C#-Projects:
PersistencyService
EventCatalogSingleton (kode vist i klassen)
51

Projektaflevering (19/12 kl. 11.00)

 

Repetition/Spørgetimer

Spørgetime: ??
2 Eksamen 14-15. januar 2019 Eksamensspørgsmål
Eksamensliste (Mødeliste)